<?php

use_helper('Object', 'Form');

function obtenerMecanicosParaCheckList($object, $method, $options)
{
  // get the lists of objects
  	$through_class = _get_option($options, 'through_class');

	$datos_coordinadores = KernelConfiguracionPeer::getValorVariableConfiguracionPorNombre("cargos mecanico");
	$datos_coordinadores = explode(',',$datos_coordinadores);
	$criteria = new Criteria();

	$criteria->add(RrhhPersonalPeer::CARGO_ID, $datos_coordinadores,Criteria::IN);//cooredinadores
	$objects = RrhhPersonalPeer::doSelectJoinKernelTercero($criteria);

  	$objects_associated = sfPropelManyToMany::getRelatedObjects($object, $through_class);
  	$ids = array_map(create_function('$o', 'return $o->getPrimaryKey();'), $objects_associated);

  	return array($objects, $objects_associated, $ids);
}



function selectorCiudad_tag($nombre, $valor='', $valor_campo='', $options = array())
{
  
  $paises = KernelPaisPeer::doSelect(new Criteria());
  $arreglo_paises = array();
  $ciudad_tmp = null;
  foreach($paises as $pais)
  {
    $arreglo_paises[$pais->getId()] = $pais->getNombre();
    
  }
  
  
  $dptos = KernelDepartamentoPeer::doSelect(new Criteria());
  $arreglo_dptos = array();
  foreach($dptos as $dpto)
  {
    $arreglo_dptos[$dpto->getId()] = $dpto->getNombre();
    
  }
  
  $ciudades = KernelCiudadPeer::doSelect(new Criteria());
  $arreglo_ciudades = array();
  foreach($ciudades as $ciu)
  {
    if(!$ciudad_tmp)$ciudad_tmp = $ciu;
    $arreglo_ciudades[$ciu->getId()] = $ciu->getNombre();
    
  }
  
  $ciudad = KernelCiudadPeer::retrieveByPK($valor);
  if(! $ciudad )$ciudad = $ciudad_tmp;
  $departamento = $ciudad->getKernelDepartamento();
    
  $option_pais_tags = options_for_select($arreglo_paises, $departamento->getPaisId() , $options);
  $option_dpto_tags = options_for_select($arreglo_dptos, $departamento->getId() , $options);
  $option_ciudad_tags = options_for_select($arreglo_ciudades, $valor, $options);
  
  return "<div id='div_selector_ciudad'>".select_tag('Pais',$option_pais_tags , array('id'=>'pais_selecionado', 'onchange'=>'cambiarValoresDepartamento(this.value)')).select_tag('Departamento',$option_dpto_tags , array('id'=>'departamento_selecionado', 'onchange'=>'cambiarValoresCiudad(this.value)')).select_tag($nombre,$option_ciudad_tags , null)."</div>"; 
  
}

function object_selectorCiudad($object, $method, $options = array(), $default_value = null)
{
   
         $options = _parse_attributes($options);
         $name = _convert_method_to_name($method, $options);
       
         $value = "";
         if (is_object($object))
         {
           $value = _get_object_value($object, $method, $default_value);
         }
         else
         {
           $value = $object;
         }
         
         return selectorCiudad_tag($name, $value , '' ,$options);
}

function object_dirdian($object, $method, $options = array(), $default_value = null)
{
    $options = _parse_attributes($options);
    $valor = null;
    
    if(!$object->isNew())
     $valor = _get_object_value($object, $method, $default_value); 

    $html = dirdian_tag($valor, $valor_campo, $options); 
    return $html;
}

function dirdian_tag  ($valor='', $valor_campo='', $options = array())
{      

    $html = "";
    $opcion = $options['opcion'];  
    $name =  _convert_method_to_name($method, $options);    

    $js = '<script>
    abrirDirDian = function ()
    {    
    win_dian = abrirVentanaLocal("div_dir_dian", "div_dir_dian", { "width": "800px", "height":"550px"});
    }</script>';
  
     $html .= $js.'<input readonly="readonly" class="TEXT" name="'.$name.'" size="40" maxlength="200" value="'.$valor.'" id="'.get_id_from_name($name).'" type="text">
            <input class="botonIluminado" name="accion" value="..." onclick="new Ajax.Updater({success:\'div_dir_dian\',failure:\'error\'}, \''. "direccionesdian/index?retorno=".get_id_from_name($name) .'\', {asynchronous:true, evalScripts:true, method:\'GET\',  onComplete:function(request, json){ abrirDirDian();} })" tabindex="" type="button">          ';

    return $html;
}

/**
 *
 *
 *
 */   

function object_wincombo($object, $method, $options = array(), $default_value = null)
{
    $options = _parse_attributes($options);
    $valor = null;
    
    if(!$object->isNew())
     $valor = _get_object_value($object, $method, $default_value); 
    
    //$class = _get_option($options, 'related_class', false);
    $class = $options['related_class'];
    $classPeer = $class."Peer";
    $peerMethod = "retrieveByPK";
    $objeto_relacionado = null;
    
    $metodoNormal = "get$class";
    $valor_campo = null;
    
    try{  
        if (method_exists($object, $metodoNormal))
        {
            $objeto_relacionado = $object->$metodoNormal();  
        }
        if($objeto_relacionado == null)
        {
            $objeto_relacionado = call_user_func(array($classPeer, $peerMethod), $valor);
        }
        
        if($objeto_relacionado)
        {
            $metodoConsulta = "";
            foreach (array('__toString', 'toString', 'getPrimaryKey') as $method)
            {
                if (method_exists($objeto_relacionado, $method))
                {
                    $metodoConsulta = $method;
                    break;
                }
            }
            if($valor == null)
            {
                $valor = $objeto_relacionado->getId();
            }
            // valor que se muestra
            $valor_campo = $objeto_relacionado->$metodoConsulta();
        }
    }catch(Exception $e)
    {}
    
    $html = wincombo_tag($valor, $valor_campo, $options); 
    return $html;
}


function wincombo_tag  ($valor='', $valor_campo='', $options = array())
{      
    $method = "";
    $patron = $options['patron'];
    $alt_div_actualizar = "";
    if(isset($options['modulo_informacion']))
    {
    $alt_div_actualizar = $options['modulo_informacion'];
    unset($options['modulo_informacion']);
    }
    $html = auto_tag($valor, $valor_campo, $options);
    
    $options['patron'] = $patron;
    $opcion = $options['opcion'];  
    $name =  _convert_method_to_name($method, $options);    
    $indices = "";
    $indices = "indices = ['".get_id_from_name($name)."', '". get_id_from_name($name)."_text', ";  
     
    $camposActualizar = null;
    $funcionesActualizar = null;
    
    if(isset($options['actualizar']))
    {
          $camposActualizar   = array_keys($options['actualizar']);
          $indices .=   "'".implode("', '", $camposActualizar). "'";
          $funcionesActualizar =   "+'&funcionesActualizar=".implode("--", $options['actualizar'])."'";
    }
    
    $numero_detalle = _get_number_details($name);
    $indices .= "]"; 
    $class = $options['related_class']; 
    $patrones = "'&clase=$class'";
    if(isset($options['patron']) && is_array($options['patron']))
    {  
        foreach($options['patron'] as $key=>$val)
        {
            if($val=='this')
            {
                 $patrones .= "+'&patron[".$key."]='+$('".get_id_from_name($name)."_text').value";  
            }else
            {
       
                if(strpos($val, "value=") !== false)
                {
                    $val = trim(str_replace("value=", "", $val));
                    $patrones .= "+'&patron[".$key."]='+('".get_id_from_name($val)."')";

                }else
                {
                    $patrones .= "+'&patron[".$key."]='+$('".get_id_from_name($val).$numero_detalle."').value";
                }
            }
        }
    }

    if(isset($options['joins']))
    { 
        foreach($options['joins'] as $left=>$right)
        {
            $patrones .= "+'&join[]=$left--$right'"; 
        }         
    }
    
    $order ="";
    if(isset($options['order']))
    {
        foreach($options['order'] as $key=>$val)
        {
            $order .= "&order[]=".$key."--".$val;
        }
        $patrones.= "+'".$order."'";
    }

    $patrones .= $funcionesActualizar;

    $alertImageURI = "";
    $html .= "<span id=\"boton_wincombo\">&nbsp;<input type=\"button\" title='Haga clic aqu&iacute para realizar la b&uacute;squeda, con el par&aacute;metro suministrado' value='...' onClick=\"$indices; wincombo('".get_id_from_name($name)."_text','$opcion',$patrones,60,50)\">&nbsp;&nbsp;";
    $html .= "</span><span style=\"vertical-align:bottom;\"><a href=\"#\" onclick=\"limpiarWincombo($indices);\">";
    $html .= image_tag('/kernel/wincombo/images/limpiar_wincombo.png',array('alt'=>'Limpiar wincombo','title'=>'Limpiar wincombo'));
    $html .= "</a></span>".field_error($name, null, $alertImageURI, null);

    return $html;    
}

/**
 * Retorna un componente de tipo autocompletar.
 *
 * @param object un objeto.
 * @param string un metodo para traer el valor del objeto.
 * @param array opciones.
 * @param valor por defecto.
 *
 * @return Retorna un componente de tipo autocompletar.
 *
 */
function object_auto($object, $method, $options = array(), $default_value = null)
{
  $options = _parse_attributes($options);
  
  $valor = null;
  // calcula el valor del campo oculto
  if(!$object->isNew())
   $valor = _get_object_value($object, $method, $default_value); 
  
  $valor_campo = "";

  // clase relacionada, permite obtener un objecto del tipo de la clase relacionada, el objetivo es traer la descripci�n o nombre
  // del codigo correspondiente
  //$classPeer = _get_option($options, 'related_class', false)."Peer";
  $class = isset($options['related_class'])? $options['related_class']:''; 
  $classPeer = $class."Peer";
  $peerMethod = "retrieveByPK"; 
  //$options['control_name'] =  _convert_method_to_name($method, $options); 
  
    $metodoNormal = "get$class";

    try
    {  
        if (method_exists($object, $metodoNormal))
        {
            $objeto_relacionado = $object->$metodoNormal();  
        }
        if($objeto_relacionado == null)
        {
            $objeto_relacionado = call_user_func(array($classPeer, $peerMethod), $valor);
        }
        if($objeto_relacionado)
        {
            $metodoConsulta = "";
            foreach (array('__toString', 'toString', 'getPrimaryKey') as $method)
            {
              if (method_exists($objeto_relacionado, $method))
              {
                $metodoConsulta = $method;
                break;
              }
            }
            // valor que se muestra
            $valor_campo = $objeto_relacionado->$metodoConsulta();
        }
  }catch(Exception $e)
  {}
   
  return auto_tag($valor, $valor_campo, $options);  

}


function auto_tag($valor='', $valor_campo='', $options = array())
{      
    $method = "";
    $name =  _convert_method_to_name($method, $options); 
    $modulo_auto =   'autocompletar';
    $accion_auto = 'autocompletar';
    $html = "";

    if(isset($options['accion']))
        $accion_auto =   $options['accion'];    

    $with =  "updateParametros";
    if(isset($options['with']))
        $with =   $options['with']; 

    $options['with']=$with;
    $numero_detalle = _get_number_details($name); 
    $class = $options['related_class'];                                                             
    $clase = "'clase=$class'"; 
    $patrones = "";
      
    if(isset($options['patron']) && is_array($options['patron']))
    {  
        $patrones = "var patrones = {";
        foreach($options['patron'] as $key=>$val)
        {
            if($val=='this')
            {
                $patrones .= "'".$key."':'".get_id_from_name($name)."_text',";
            }else
            {
                $patrones .= "'".$key."':'".get_id_from_name($val).$numero_detalle."',"; 
            }
        }
        $patrones .= "}" ;
    }
    
    if(isset($options['joins']))
    { 
        foreach($options['joins'] as $left=>$right)
        {
            $clase .= "+'&join[]=$left--$right'"; 
        }         
    }

    $clase .= "+'";

    $letras = 2;
    if(isset($options['letras']))$letras = $options['letras'];  

    $indices = "";
    $indices .= "var indices = ['".get_id_from_name($name)."', '". get_id_from_name($name)."_text', ";
    $funcionesActualizar = "";

    if(isset($options['actualizar']))
    {
          $camposActualizar   = array_keys($options['actualizar']);
          $indices .=   "'".implode("', '", $camposActualizar). "'";
          $funcionesActualizar =   "&funcionesActualizar=".implode("--", $options['actualizar'])."";
    }
   /* if(isset($options['actualizar']))
    {
        $camposActualizar = trim(str_replace(array('(', ')' ), array('', ''),  $options['actualizar']));    
        $indices .=  "'".str_replace(' ', $numero_detalle."', '",  $camposActualizar)."'";
    }
    */
    $indices .= "]";   

    $javascript = "";
    if(isset($options['javascript']))
    {
        $javascript = "func_autocompletar = '".$options['javascript']."';"; 
    }
    $order ="";
    if(isset($options['order']))
    {
        foreach($options['order'] as $key=>$val)
        {
            $order .= "&order[]=".$key."--".$val;
        }
    }
    $alertImageURI = "";
     $html .= input_hidden_tag($name, $valor, array_merge(array('id' => get_id_from_name($name)), array_merge(get_validation_tag_options($name, $alertImageURI))));
    
    $opciones_html =  $options;
    
 //   unset($opciones_html['onchangehidden']);
    unset($opciones_html['patron']);
    unset($opciones_html['actualizar']);
    unset($opciones_html['joins']);
    unset($opciones_html['letras']);
    unset($opciones_html['javascript']);
    unset($opciones_html['patrones']);
    unset($opciones_html['related_class']);
    unset($opciones_html['opcion']);
    unset($opciones_html['with']);
    

    $html .= input_auto_complete_tag(get_id_from_name($name)."_text", "$valor_campo",
                                     $modulo_auto."/".$accion_auto."?'+".$clase.$funcionesActualizar.$order,
                                     array_merge($opciones_html, array('autocomplete' => 'off', 'name'=>get_id_from_name($name))),
                                     array('use_style' => true, 'with'=>$with, 'actualizar'=>$indices.";".$patrones, 'patrones'=>$patrones )
    );  
    
    return $html;
}




?>
